<?php

// 发立得信息发布系统房屋信息版(php+mysql) V1.0
// 演示地址: http://fang.chalide.cn
// 文件路径: usr/login.php
// 文件大小: 6534 字节
// 最后修改时间: 2025-05-23 16:35:30
// 作者: yujianyue
// 邮件: 15058593138@qq.com
// 版权所有,保留发行权和署名权
/**
 * 本文件功能：用户登录/注册
 * 版权声明：保留发行权和署名权
 * 作者信息：15058593138@qq.com
 */

// 已登录则跳转到用户中心
if (check_login(USER_TYPE_USER)) {
    header('Location: usr.php?do=fabu');
    exit;
}

// 处理AJAX请求
if (isset($_GET['act'])) {
    $act = $_GET['act'];
    $db = DB::getInstance();
    
    switch ($act) {
        // 登录/注册处理
        case 'login':
            if (empty($_POST['user']) || empty($_POST['pass'])) {
                json_msg(0, '请填写账号和密码');
            }
            
            $user = $db->escape($_POST['user']);
            $pass = md5($_POST['pass']);
            $mobi = isset($_POST['mobi']) ? $db->escape($_POST['mobi']) : '';
            
            // 检查用户是否存在
            $sql = "SELECT * FROM user WHERE user = '$user'";
            $userInfo = $db->getRow($sql);
            
            if ($userInfo) {
                // 用户存在，检查密码
                if ($userInfo['pass'] != $pass) {
                    json_msg(0, '密码错误');
                }
                
                // 检查账号状态
                if ($userInfo['status'] != USER_STATUS_ENABLED) {
                    json_msg(0, '账号已被禁用');
                }
                
                // 更新登录时间
                $db->query("UPDATE user SET log_time = NOW() WHERE id = {$userInfo['id']}");
            } else {
                // 用户不存在，自动注册
                if (empty($mobi)) {
                    json_msg(0, '请填写手机号');
                }
                
                // 插入新用户
                $data = [
                    'user' => $user,
                    'pass' => $pass,
                    'type' => USER_TYPE_USER,
                    'mobi' => $mobi,
                    'add_time' => date('Y-m-d H:i:s'),
                    'log_time' => date('Y-m-d H:i:s'),
                    'status' => USER_STATUS_ENABLED
                ];
                
                $userId = $db->insert('user', $data);
                
                if (!$userId) {
                    json_msg(0, '注册失败，请稍后重试');
                }
                
                // 获取新注册的用户信息
                $sql = "SELECT * FROM user WHERE id = $userId";
                $userInfo = $db->getRow($sql);
            }
            
            // 设置会话
            $_SESSION['user'] = $userInfo;
            
            json_msg(1, '登录成功');
            break;
            
        default:
            json_msg(0, '未知操作');
    }
    
    exit;
}
include './inc/head.php';
?>

<div class="login-container" style="max-width:400px;margin:30px auto;background:#fff;padding:20px;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,0.1);">
    <h2 style="text-align:center;margin-bottom:20px;">用户登录/注册</h2>
    
    <form id="login-form">
        <div class="form-group">
            <label class="form-label">账号（邮箱）</label>
            <input type="email" name="user" class="form-control" placeholder="请输入邮箱" required>
        </div>
        
        <div class="form-group">
            <label class="form-label">密码</label>
            <input type="password" name="pass" class="form-control" placeholder="请输入密码" required>
        </div>
        
        <div class="form-group" id="mobi-group" style="display:none;">
            <label class="form-label">手机号</label>
            <input type="tel" name="mobi" class="form-control" placeholder="请输入手机号">
        </div>
        
        <div class="form-group">
            <button type="button" id="login-btn" class="btn btn-primary" style="width:100%;">登录/注册</button>
        </div>
        
        <div style="text-align:right;">
            <a href="usr.php?do=mima">忘记密码？</a>
        </div>
    </form>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const loginBtn = document.getElementById('login-btn');
    const loginForm = document.getElementById('login-form');
    const mobiGroup = document.getElementById('mobi-group');
    
    // 检查邮箱是否存在
    function checkEmail() {
        const email = loginForm.elements.user.value;
        if (!email) return;
        
        ajax({
            url: 'usr.php?do=login&act=check_email',
            method: 'POST',
            data: { email: email },
            success: function(res) {
                if (res.code === 0) {
                    // 邮箱不存在，显示手机号输入框
                    mobiGroup.style.display = 'block';
                } else {
                    mobiGroup.style.display = 'none';
                }
            }
        });
    }
    
    // 邮箱输入框失焦事件
    loginForm.elements.user.addEventListener('blur', checkEmail);
    
    // 登录/注册按钮点击事件
    loginBtn.addEventListener('click', function() {
        const email = loginForm.elements.user.value;
        const pass = loginForm.elements.pass.value;
        const mobi = loginForm.elements.mobi.value;
        
        if (!email) {
            showToast('请输入邮箱');
            return;
        }
        
        if (!pass) {
            showToast('请输入密码');
            return;
        }
        
        if (mobiGroup.style.display !== 'none' && !mobi) {
            showToast('请输入手机号');
            return;
        }
        
        // 登录/注册
        ajax({
            url: 'usr.php?do=login&act=login',
            method: 'POST',
            data: {
                user: email,
                pass: pass,
                mobi: mobi
            },
            success: function(res) {
                if (res.code === 1) {
                    showToast(res.msg);
                    // 登录成功，跳转到发布页
                    setTimeout(function() {
                        window.location.href = 'usr.php?do=fabu';
                    }, 1000);
                } else {
                    showToast(res.msg);
                }
            },
            error: function() {
                showToast('网络错误，请稍后重试');
            }
        });
    });
    
    // 回车键提交
    loginForm.addEventListener('keydown', function(e) {
        if (e.keyCode === 13) {
            loginBtn.click();
        }
    });
});
</script>
